Validation Annotations (@NotNull, @Size) ব্যবহার করা

Java Technologies - জ্যাকসন (Jackson) - Jackson এবং Bean Validation Integration
172

Java Bean Validation অ্যানোটেশন যেমন @NotNull, @Size, এবং অন্যান্য হ্যান্ডল করতে Jackson এবং Bean Validation API (যেমন Hibernate Validator) একত্রে কাজ করে। এগুলো সাধারণত ডেটা ভ্যালিডেশন নিশ্চিত করার জন্য ব্যবহৃত হয়।


Java Bean Validation এর প্রধান উদ্দেশ্য

  • @NotNull: কোনো ফিল্ড null হতে পারবে না।
  • @Size: কোনো ফিল্ডের দৈর্ঘ্য বা সাইজ নির্দিষ্ট সীমার মধ্যে থাকতে হবে।
  • @Min, @Max: একটি ফিল্ডের সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ।
  • @Pattern: একটি ফিল্ড নির্দিষ্ট প্যাটার্ন অনুসরণ করছে কি না তা যাচাই।

Jackson এর মাধ্যমে Validation Integration

প্রয়োজনীয় ডিপেনডেন্সি

Maven Dependency:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.4.Final</version>
</dependency>

Step-by-Step উদাহরণ

১. মডেল ক্লাসে Validation Annotation যোগ করা

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class User {
    @NotNull(message = "Name cannot be null")
    private String name;

    @Size(min = 1, max = 50, message = "Name length must be between 1 and 50 characters")
    private String username;

    @NotNull(message = "Email cannot be null")
    private String email;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

২. Validation চেক করার জন্য Validator ব্যবহার করা

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintViolation;
import java.util.Set;

public class ValidationExample {
    public static void main(String[] args) {
        // Validator তৈরি
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();

        // মডেল অবজেক্ট তৈরি
        User user = new User();
        user.setName(null); // Invalid
        user.setUsername(""); // Invalid
        user.setEmail(null); // Invalid

        // Validation চেক
        Set<ConstraintViolation<User>> violations = validator.validate(user);

        // Validation ত্রুটি প্রদর্শন
        for (ConstraintViolation<User> violation : violations) {
            System.out.println(violation.getPropertyPath() + ": " + violation.getMessage());
        }
    }
}

Output:

name: Name cannot be null
username: Name length must be between 1 and 50 characters
email: Email cannot be null

৩. Spring Boot এর সাথে Validation ব্যবহার করা

Spring Boot এর ক্ষেত্রে Validation সহজে REST API তে ব্যবহার করা যায়।

Spring Boot মডেল ক্লাস:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class User {
    @NotNull(message = "Name cannot be null")
    private String name;

    @Size(min = 1, max = 50, message = "Username length must be between 1 and 50 characters")
    private String username;

    @NotNull(message = "Email cannot be null")
    private String email;

    // Getters and Setters
}

Spring REST Controller:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @PostMapping
    public ResponseEntity<String> createUser(@Valid @RequestBody User user) {
        return new ResponseEntity<>("User is valid!", HttpStatus.OK);
    }
}

API Call উদাহরণ:

Request:

{
  "name": null,
  "username": "",
  "email": null
}

Response:

{
  "timestamp": "2024-12-21T10:30:00.000+00:00",
  "status": 400,
  "errors": [
    "Name cannot be null",
    "Username length must be between 1 and 50 characters",
    "Email cannot be null"
  ]
}

৪. Validation Error হ্যান্ডল করা

Spring Boot এ কাস্টম Error Response তৈরি করতে একটি ExceptionHandler ব্যবহার করা হয়।

Custom Exception Handler:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;

@RestControllerAdvice
public class ValidationExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) {
        Map<String, String> errors = new HashMap<>();
        for (FieldError error : ex.getBindingResult().getFieldErrors()) {
            errors.put(error.getField(), error.getDefaultMessage());
        }
        return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
    }
}

Response:

{
  "name": "Name cannot be null",
  "username": "Username length must be between 1 and 50 characters",
  "email": "Email cannot be null"
}

  • @NotNull এবং @Size এর মতো Validation অ্যানোটেশন ব্যবহার করে ডেটার মান যাচাই করা সহজ হয়।
  • Jackson এবং Bean Validation এর ইন্টিগ্রেশন JSON ডেটা ভ্যালিডেশন নিশ্চিত করে।
  • Spring Boot এ @Valid এবং Exception Handler ব্যবহার করে REST API তে Validation সহজে প্রয়োগ করা যায়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...